package mastermind.gui.controls;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;

/**
 * Diese Klasse stellt eine GroupBox im Mastermind Design dar
 */
public class GroupUI extends Composite
{

	private String	_text;

	/**
	 * Erstellt ein neues GroupUI Objekt
	 * 
	 * @param parent
	 *            Eltern-Objekt, auf das das GroupUI Objekt plaziert wird
	 * @param style
	 *            Zus&auml;zliche Style Informationen
	 */
	public GroupUI(final Composite parent, int style)
	{
		super(parent, style);

		this.setBackground(new Color(Display.getDefault(), new RGB(220, 150, 110)));
		this.addPaintListener(new PaintListener() {
			@Override
			public void paintControl(PaintEvent e)
			{
				e.gc.setBackground(parent.getBackground());
				e.gc.fillRectangle(0, 0, getBounds().width, getBounds().height);

				e.gc.setAntialias(SWT.ON);
				e.gc.setBackground(new Color(Display.getDefault(), new RGB(220, 150, 110)));
				e.gc.fillRoundRectangle(1, 7, getBounds().width - 2, getBounds().height - 9, 5, 5);

				e.gc.setLineWidth(2);
				e.gc.setForeground(new Color(Display.getDefault(), new RGB(150, 75, 0)));
				e.gc.drawRoundRectangle(1, 7, getBounds().width - 2, getBounds().height - 9, 5, 5);

				Point txtSize = e.gc.textExtent(getText());
				e.gc.setBackground(new Color(Display.getDefault(), new RGB(220, 150, 110)));
				e.gc.fillRoundRectangle(6, 1, getBounds().width - 12, txtSize.y, 4, 4);

				e.gc.setForeground(new Color(Display.getDefault(), new RGB(150, 75, 0)));
				e.gc.drawRoundRectangle(6, 1, getBounds().width - 12, txtSize.y, 4, 4);

				e.gc.setForeground(getForeground());
				e.gc.drawText(getText(), (getBounds().width - txtSize.x) / 2, 0, true);
			}
		});
	}

	/**
	 * Gibt den angezeigten Text zur&uuml;ck
	 * 
	 * @return Den angezeigte Text
	 */
	public String getText()
	{
		return _text;
	}

	/**
	 * Legt den anzuzeigenden Text fest
	 * 
	 * @param text
	 *            Text, der angezeigt werden soll
	 */
	public void setText(String text)
	{
		this._text = text;
	}
}
